Profile configuration for a mobile computing device

ABSTRACT

Data processing apparatus is disclosed comprising: a sensor module configured to sense a first profile comprised of one or more attributes of an environment of said data processing apparatus; and a classification module configured to assign a prediction factor to each of said one or more attributes of said first profile and to store each said attribute and assigned prediction factor as a stored profile.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.11/868,925 (now U.S. Pat. No. 7,917,456), filed Oct. 8, 2007, which isincorporated by reference in its entirety.

BACKGROUND

1. Field

The present invention relates to apparatus and method for classifyingthe environment of a data processing apparatus.

2. Description of the Related Art

Users of communications devices such as cellular telephones,smartphones, personal digital assistants (PDAs) and data processingapparatus in general often have such devices with them at all times.However, while it is convenient to have a communications device presentat all times it can be intrusive, for example if telephone calls arereceived whilst in a meeting or business telephone calls received whilstat home. A user may wish to only receive SMS text messages or voicemailduring such times but may forget to configure the communications deviceto respond to only text messages or take voicemail.

It is also the case that the times when a user would not wish to bedisturbed, such as when in a meeting or by business calls when at homeare often characterized by the user being in a particular location, withparticular people and/or when the user is exhibiting particular behavioror a particular type of use of the device. Such things may be consideredto represent the environment of the user and the communications device.

Aspects of the present invention were made with the foregoing in mind.

SUMMARY

Viewed from a first aspect disclosed is a data processing apparatuscomprising a sensor module configured to sense a first profilecomprising one or more attributes of an environment of the dataprocessing apparatus; and a classification module configured to assign aprediction factor to each of the one or more attributes of the firstprofile and to store each attribute and assigned prediction factor.Viewed from a second aspect, a method of operating data processingapparatus comprises sensing a first profile comprising one or moreattributes of an environment of the data processing apparatus; assigninga prediction factor to each of the one or more attributes of the firstprofile; and storing each attribute and assigned prediction factor.

Data processing apparatus configured or operated in accordance with theforegoing aspects may sense attributes of the data processing apparatusenvironment such as cellular telephone cell sites, ambient light and/ornoise, and/or the presence of other devices by sensing their Bluetoothsignals, as non-limiting examples. At a given moment, the attributes inthe environment of the data processing apparatus may be sensed andstored by the data processing apparatus.

Assigning a prediction factor to each attribute in a stored profileprovides a value against which attributes of later observed environmentprofiles may be compared to determine if an observed environment profileis the same or similar to a stored environment profile. If the same or asimilar environment to a stored environment is observed then the dataprocessing apparatus settings, or settings of a communications deviceincorporating the data processing apparatus, may be set to be consistentwith settings previously set for the stored environment profile.

In this way, a communications device incorporating such data processingapparatus may be automatically configured according to its environment.Thus, in an office environment an observed profile may match a storedprofile which is the profile when the user is at their desk, or in aconference room. The communications device may be automaticallyconfigured in accordance with an operational mode associated with thestored profile.

The classification module may be configured to automatically determine avalue for the correlation between the first profile and one or morestored profiles and store the first profile if each of the correlationvalues is less than a threshold level. In this way, the data processingapparatus may automatically determine if an observed profile isdifferent from the stored profiles and store the observed profile. Thus,a new observed environment may be automatically stored therebyautomatically building a database of environments for the dataprocessing apparatus.

Optionally, or additionally, a user of the data processing apparatus mayinitiate storing of an observed profile. Additionally, theclassification module may be configured to normalize each assignedprediction factor to the number of attributes in the first profile. Forexample, each assigned prediction factor may be a number N divided bythe number of attributes in the first profile. By making the predictionfactors a function of the number of detected attributes, the sameabsolute level of the prediction factors may be maintained independentlyof the number of attributes in the first profile.

The classification module may be configured to determine each of thecorrelation values based on a difference between the presence of one ormore attributes in the first profile and the presence of one or moreattributes in each of the one or more stored profiles. In this way, itmay be determined to what extent an observed profile is similar tostored profiles.

In one embodiment the classification module may be configured todetermine each correlation value based on adding and subtractingprediction factors; and to add a prediction factor if associated with anattribute of the stored profile for which a corresponding attribute ispresent in the first profile and subtract a prediction factor ifassociated with an attribute of the stored profile for which acorresponding attribute is not present in the first profile. In thisway, the similarity between an observed (first) profile and a storedprofile is based on the prediction factors for those attributes presentin both the first profile and the stored profile.

The data processing apparatus may further comprise a learning module.The classification module may be configured to determine a best matchstored profile, the best match stored profile being the stored profilehaving the highest correlation value with the first profile. Thelearning module may be configured to update the best match storedprofile determined by the classification module for the highestcorrelation value being equal to or exceeding the threshold value andnot being the maximum correlation value. Thus, a stored profile may beupdated based on the first profile where the first profile is similar tothe stored profile, but not identical. In this way, stored profiles maybe adapted and modified to take into account gradual changes in anenvironment.

The learning module may be configured to update the best match storedprofile by adding to the best match profile an attribute of the firstprofile not present in the best match stored profile. Optionally, oradditionally, the learning module may be configured to modify theprediction factor of each attribute present in the best match storedprofile. In this way a stored profile may be gradually modified andupdated if the environment corresponding to that stored profilegradually changes over time.

The learning module may be configured to add a learning factor to eachprediction factor of each attribute present in both the best matchstored profile and the first profile. The learning factor may increasethe prediction factor (importance) of attributes which are present inboth the best match profile and the first profile, and decrease theprediction factor (importance) of those that are not. A “remove”threshold may be set such that an attribute having a prediction factorless than the “remove” threshold is removed from the stored profile. Thelearning module may be configured to normalize learning factors of thestored best match profile. In addition, in one embodiment usingpercentage values the formula (100%/number of detected attributes) *learning factor may be used to derive a learning factor which providesan equal amount of change due to updating distributed over all modifiedattributes.

In one embodiment, the data processing apparatus comprises an actionmodule configured to perform an action associated with said best matchstored profile. Such an action might be to inhibit incoming telephonecalls, switch calls to voicemail or some other device setting.

In one embodiment, a computer program comprises computer programelements which are implementable in a general data processing apparatus(for example a computer) to configure data processing apparatus andimplement a method for such data processing apparatus in accordance withthe foregoing.

The features and advantages described in the specification are not allinclusive and, in particular, many additional features and advantageswill be apparent to one of ordinary skill in the art in view of thedrawings, specification and claims. Moreover, it should be noted thatthe language used in the specification has been principally selected forreadability and instructional purposes, and may not have been selectedto delineate or circumscribe the disclosed subject matter.

BRIEF DESCRIPTION OF THE FIGURES

Other advantages and features will be more readily apparent from thefollowing detailed description and the appended claims. The detaileddescription will make reference to the following figures:

FIG. 1 is a schematic illustration of one embodiment of an architectureof a disclosed system;

FIG. 2 is a schematic illustration of one embodiment of a mobilecommunications device;

FIG. 3 is a schematic illustration of one embodiment of a stored profilecreated from an observed profile;

FIG. 4 is a process flow control diagram for one embodiment of aclassification module;

FIG. 5 is a process flow control diagram for one embodiment of alearning module;

FIG. 6 is a schematic illustration showing a final match score for oneembodiment of an observed profile and stored profile;

FIG. 7 is a schematic illustration showing iterations of one embodimentof an updated stored profile based on an observed profile; and

FIG. 8 illustrates one embodiment of a profile/action concordance table.

DETAILED DESCRIPTION

A preferred embodiment is now described with reference to the figureswhere like reference numbers indicate identical or functionally similarelements.

The embodiments are, by way of example only, and with reference to theaccompanying figures introduced above.

A general overview of the operation of an embodiment will now bedescribed with reference to the functional architecture illustrated inFIG. 1. Environment sensor modules 102 are configured to sense a valueof one or more aspects or features of the environment at a particulartime or in a particular time window. An aspect or feature is somethingin the environment that can be sensed and a value assigned to it. Anaspect or feature with an assigned value is termed herein an attributeof the observed environment.

The value may be a logical value such as true or false, which merelyindicates the presence or absence of an aspect or feature in theenvironment, or it may be a numeric value indicating the amount ofsomething in the environment, for example. The environment may be aphysical environment, a processing or executing environment such as acomputer application that is being run on a data processing apparatus orthe state of a data processing apparatus, or a combination of two ormore, for example.

Input module 104 is configured to collect attribute values from theenvironment sensors 102. This may be done automatically or triggered byuser input. One or more attributes sensed at the same time or within thesame time window form an environment profile, which may be considered a“snapshot” of the environment. The input module 104 forwards theobserved profile to classification module 106. The classification module106 compares the attributes of the forwarded observed profile withprofiles stored in profiles database 114.

The classification module 106 assigns a default prediction factor toeach attribute in a profile the first time the profile is created. At alater time the input module 104 may collect attributes of theenvironment observed by sensors 102. Classification module 106 maycompare the newly observed profile to see if its attributes match any ofthe stored profiles. The profile and best match score is passed tooutput module 108 which distributes it to learning module 110 and actionmodule 112. Action module 112 evaluates the profile and matching scoreand may initiate an associated task or state for the data processingapparatus associated with the stored profile providing the best match,for example.

If the observed profile is different from any of the stored profiles butsufficiently closely matching, the learning module 110 uses thedifferences to adapt and adjust a stored profile, such as a storedprofile having the closest match to the observed profile, by adjustingthe prediction factors associated with the presence of one or more ofthe attributes in the stored profile. In this way, stored profiles maybe automatically adapted and adjusted based on differences betweenobserved profiles and stored profiles. Thus, stored profiles may begradually adapted and adjusted to take into account changes in theenvironment. If no sufficiently closely matching stored profile is foundthen the learning module 106 may initiate storing of the observedprofile in the profiles database, as a new profile.

In a particular embodiment, the data processing apparatus comprises acommunications device such as a smartphone. In this embodiment thepresence of Bluetooth devices in an environment of a smartphone issensed. A smartphone is a mobile communications device which providesfunctions in addition to voice and/or data communications, for exampleit may provide address book functionality or run applications such asword processor applications or other application software.

For simplicity and clarity of description the following descriptionrefers to a smartphone in which only Bluetooth signals are sensed,although it will be evident to a person of ordinary skill in the artthat other aspects of the environment may be sensed by the smartphonedependent on what sensor modules or sensing operations are included inthe smartphone.

FIG. 2 is a schematic illustration of a smartphone 200 configured inaccordance with an embodiment of the present invention which sensesBluetooth protocol wireless signals in the environment of the smartphone200. Example smartphones include 12, 20, or 24-key keypad smartphones.Other example smartphones include smartphones having mechanical oron-screen character keypads in a keyboard type layout. By way ofexample, such keyboard type layouts include a ‘QWERTY’ (having, interalia, ‘Q’, ‘W’, ‘E’, ‘R’, ‘T’, ‘Y’, keys successively in a row),‘AZERTY’, ‘QWERTZ’, ‘QZERTY’, Dvorak, or double-byte keys keypad layout.

Smartphone 200 comprises a screen 224, a keyboard 222, an RF interface220, a processor 218 and a memory 216, all of which are connected to adata bus 226. Stored in memory 216 are an environment classificationapplication program 228 and an environment profiles database 214. Alsoincluded in smartphone 200 is a Bluetooth module 202 which providesBluetooth communication and Bluetooth sensing. Bluetooth is a low powerwireless communications protocol for wirelessly communicating betweendevices such as computers, printers and communications devices. Theprotocol is governed by the Bluetooth Special Interest Group (SIG).

The keyboard 222 enables a user of the smartphone 200 to enter text dataand commands into the smartphone 200. The processor 218 is configured torun the environment classification application 228 which is stored inmemory 216 and provide a graphical user interface to the user on thescreen 224. The RF interface 220 is configured to provide wirelesscommunication with other devices for example within a cellular radiotelephone network. It is noted that the keypad can be mechanical oron-screen and may in some instances comprise a combination thereof,e.g., an on-screen haptic keypad or touch sensitive keypad. Theprocessor 218 may run environment classification application 228automatically as a background routine during operation of smartphone200, or in response to a user input through, for example, keyboard 222.

Environment classification application 228 comprises an input module 204which receives Bluetooth identifier information from the Bluetoothmodule 202 and passes it to classification module 206. Theclassification module 206 compares the information from input module204, processes the information and provides an output to output module208. Output module 208 then passes the result of the classificationmodule to learning module 210 and action module 212.

When a Bluetooth enabled device has its Bluetooth module turned on itperiodically transmits from its Bluetooth module a signal announcing itsavailability for communication. The signal comprises a Bluetoothidentifier for the device which is unique to each device. The Bluetoothidentifier may be in the form of a Bluetooth module's MAC (Media AccessControl) address, which has the format xxx.xxx.xxx.xxx. It is noted thatone embodiment, the ‘x’s can be integer number values. In an environmentwhere there are a number of Bluetooth enabled devices operating, anumber of Bluetooth identifiers may be transmitted. For example, wherethere are three Bluetooth devices operating, signals comprisingrespective identifiers xxx.xxx.xxx.xx1; xxx.xxx.xxx.xx2; andxxx.xxx.xxx.xx3 may be present.

Bluetooth module 202 of smartphone 200 may detect each Bluetoothidentifier in the environment and thereby sense the presence andcommunications availability of the three other Bluetooth enableddevices. Additionally, Bluetooth module 202 may also transmit its ownidentifier, for example xxx.xxx.xxx.xx4. In the currently describedembodiment, the Bluetooth value is a logical value true or falseindicating the presence or not of a Bluetooth device in the environment.

During execution of environment classification module application 228,input module 204 acquires from Bluetooth module 202 a “snapshot” of theobserved Bluetooth identifiers detected by the Bluetooth module. Thesnapshot may be made at an instant in time or over a short time period.Acquisition of the snapshot may be under control of the classificationapplication 228 itself, or in response to a user input, for example viaa function button on keyboard 222. The creation of a new Bluetoothprofile in accordance with an embodiment of the invention will now bedescribed with reference to FIG. 3 and with reference to the processflow control diagrams of FIGS. 4 and 5.

FIG. 3 illustrates an environment 300 in which Bluetooth identities ID1302, ID2 304 and ID3 306 are present, and form an observed environmentprofile 314. If this is the first time that this combination ofBluetooth identities are sensed as present in an environment, a newprofile is created 316 by the environment classification application andstored in profiles database 214. The created profile 316 comprises theBluetooth identities, 308, 310, 312 and their prediction factors. Theprediction factors are made equal to each other and are normalized toadd up to 100%, and, therefore, in the illustrated example eachprediction factor is 33.3%. Each Bluetooth identity and its associatedprediction factor is an attribute of the created profile 316.

The stored profiles may be provided and stored with an identity label orstored in defined memory locations in profiles database 214. Forillustrative purposes in this description the profiles may be consideredto be labeled and stored numerically as profile(1) . . . profile(g) . .. profile(m). Within each created and stored profile each attribute isidentified. Again, for illustrative purposes in this description theattributes may be considered to be labeled and stored numerically asattribute(1) . . . attribute(h) . . . attribute(n).

In the currently described embodiment the creation of a new profileresults from operation of both the classification module 206 and thelearning module 210. Operation of the classification module 206 and thelearning module 210 will now be described with reference to the processflow control diagrams 400 and 500 illustrated in FIGS. 4 and 5, whichprovide merely one example of how the classification module 206 andlearning module 210 may be implemented.

The classification module 206 receives an observed profile from theinput module 204, S402. A counter “g” is assigned the value zero, S404,and then incremented by 1 at step S406. Stored profile “profile(g)” isretrieved from profiles database 214 via the classification module 206,S406. A counter “h” is then assigned the value zero, together with avariable “score” which is also assigned the value zero, S408. Thevariable “score” indicates the correlation level or similarity of theobserved profile 314 with a stored profile, and is updated duringoperation of the classification module 206.

Counter “h” is incremented by 1 and the attribute(h) of profile(g) ismade available for comparison with the attributes in the observedprofile 314, S410. Attribute(h) of profile(g) is then compared with theattributes of the observed profile 314, S412. If attribute(h) is foundin the observed profile 314 then that process control flows to step S414where the prediction factor assigned to attribute(h) is added to the“score” value. If attribute(h) is not found in the observed profile 314then the prediction factor for attribute(h) is subtracted from the“score” value, S416. If the counter value “h” reaches the maximum value“m”, where “m” is the number of attributes in the stored profile, S418,process control flows to step S420. If the counter value “h” is not themaximum value “m” process control flows back to step S410, h incrementedby one and the next attribute retrieved. If counter g=n at step S420 theprocess control flows to step S422. At step S422 the stored profilehaving the highest score is selected, and output to both learning module210 and action module 212, S424. The best match profile is the profilehaving the highest score of all, and will lie in the range −100 to 100.From the foregoing description of one example of the operation of theclassification module 206, a person of ordinary skill in the art willreadily understand how a correlation level or similarity score isderived for an observed profile and respective stored profiles.

The operation of learning module 210 will now be described withreference to the process flow control diagram 500 illustrated in FIG. 5.The stored profile with the highest score (best match score) is receivedby the learning module 210 together with the observed profile, whichbecomes the “profile to learn from” for the learning module, S502. It isthen determined whether the score is less than a “similarity threshold”,S504. The “similarity threshold” may be pre-set and/or modifiable by auser of the smartphone incorporating the environment classificationapplication 228. A suitable “similarity threshold” is 30%, althoughother values may be used at the application implementer's or user'sdiscretion.

If the highest score is less than the similarity threshold then processcontrol flows to step S506 where a profile capture signal is establishedand the observed profile is treated as a newly created profile.Normalized prediction factors are assigned to each attribute such thatthe prediction factors add up to 100%. The new profile is in effectcreated as described with reference to FIG. 3 above, and is then storedin profiles database 214, S510. If the score is equal to or greater thanthe similarity threshold the score is checked to see if it equals 100%and there is a perfect match between the observed profile and thehighest scored profile, S512. If there is a perfect match, the learningmodule then stops, S514. Optionally, the learning module may beconfigured to stop for a similarity less than 100% in which case thetest at S512 would be against a score lower than 100%.

Before continuing with the description of the process flow controldiagram 500 reference will be made to FIG. 7, which is a schematicillustration of how a stored profile is updated based on a differentobserved profile. An observed environment profile 702 includes Bluetoothidentities ID1 704, ID2 706 and ID4 708. In the described example ahighest score profile 710 comprises Bluetooth identities ID1 712, ID2714 and ID3 716. The correlation between the observed environmentprofile 702 and the highest score profile 710 has been determined to be33% by the classification module 206.

The observed profile 702 and highest score profile 710 are compared andfor each attribute that is present in both profiles a learning factor of10 is added to the attribute's prediction factor to form an updatedprofile 724. Thus, ID1 704 and ID2 706 have their prediction factorsincreased to 43.3 defining new attributes 718 and 720. ID3 708 remainsunchanged as there is no corresponding attribute in the observed profile702.

Attribute 708 (ID4) in observed profile 702 is not present in thehighest score profile and so is added to updated profile 724, and theprediction factor initialized to the learning factor 10 to formattribute 722 of updated profile 724. The prediction factors of theupdated profile 724 are normalized to 100% by summing the predictionfactors of the updated profile and dividing the sum by 100 to derive aprediction factor. The sum may be considered to be the total confidencevalue for the profile. Each prediction factor is then divided by thenormalization factor to derive a percentage prediction factor. In thedescribed example:Total confidence=Sum=43.3+43.3+33.3+10=129.9;Normalization factor=129.9/100=1.299;43.3/1.299=33.3%33.3/1.299=25.6%; and10/1.299=7.7%.

This gives a 48.7% match or confidence factor as would be derived by theclassification module 206. If observed profile 702 should occur againthe resultant updated profile 728 would have attributes ID1 730 and ID2732 with prediction factor 33.3%, ID3 734 with prediction factor 19.7%and ID4 726 with prediction factor 16.6%. Thus, after two iterations theupdated profile slowly begins to adapt to ID4 708 being present in theenvironment which used to have ID3. Thus, the prediction factor for ID4increases and the prediction factor for ID3 diminishes resulting in adecreasing prediction factor for ID3 and an overall ever increasingmatching score for the profile. The matching score increases to 60.5%.Thus, environment classification application through the learning module210 adapts stored profiles to changing environmental conditions.

At step S514 a counter i is initialized to zero, and then incremented by1, S516. Attribute(i) of the observed profile is made available forcomparison with the attributes in the highest scored profile, S518.Attribute(i) of the observed profile is then compared with theattributes of the highest scored profile, S520 to determine ifattribute(i) is present in the highest scored profile. If attribute(i)is found in the highest scored profile then the process control flows tostep S524 where a learning factor is added to the prediction factorassigned to the corresponding attribute in the highest scored profile.

If attribute(i) is not found in the highest score profile then processcontrol flows to step S522 where the attribute(i) is added to thehighest score profile and just the learning factor is added to theattribute(i) as a prediction factor, S524. The learning factor may beany suitable value set by a designer of the environment classificationapplication and/or may be user definable. A non-limiting example valueis 10.

In this way attributes that are not always found may be reduced in theirimportance. The learning factor may be adjusted, or set, according towhat level of sensitivity to environment changes is desired. Forexample, a high learning factor provides high sensitivity to environmentchanges. If a learning factor approaches infinity it may cause instantdropping or instant incorporation of an attribute in a profile.

Additionally, making the learning factor a function of the number ofdetected attributes provides for the same absolute amount of learning tobe achieved for every iteration independent of the number of attributes.The formula (100%/number of detected attributes) * learning factor mayprovide an equal amount of change due to the learning being distributedover all detected attributes.

Referring back to the process flow control diagram of FIG. 5, a check isthen made to determine if the attribute that is being considered is thelast attribute of the observed profile, attribute(n) where there are nattributes in the observed profile. The check comprises determining ifcounter i is equal to n or not, S526. If counter i is less than n theprocess control flows to step 518 where the next attribute(i) in theobserved profile is obtained ready for comparison with the highest scoreprofile.

If the final attribute in the observed profile has been compared withthe highest score profile then the sum of all the updated predictionfactors and the prediction factors of any attributes added to the nowupdated highest score profile is calculated, S528, to obtain a totalconfidence value. The total confidence value is divided by 100 to obtaina normalization factor, S530. Each prediction factor associated witheach attribute in the updated highest score profile is divided by thenormalization factor to derive a normalized updated prediction factorwhich may be expressed as a percentage.

In the described embodiment, the normalization process starts byinitializing a counter j to zero, S532, and incrementing the counter jby 1, S534. The prediction factor of attribute(j) is then divided by thenormalization factor, S536. At step S538 a check is made to determine ifthe prediction factor of the final attribute(m) has been normalized bychecking if counter j is equal to m, where m is the number of attributesin the updated profile.

If counter j is less than m the process flow control flows back to stepS530, otherwise control flows to step S540 where the updated profile isloaded into the profiles database 214 and overwrites or replaces thestored profile from which the updated profile was derived. Operation ofthe learning module may also be described by way of the followingpseudo-code. Pseudo code for an embodiment of the learning module:

-   -   For all IDs(attributes) in profile-to-learn-from (observed        profile)        -   if ID(attribute) does not exist in profile-to-update(highest            score profile)            -   create ID(attribute)        -   find ID(attribute) in profile-to-update(highest score            profile)        -   Add <learning factor> to IDprediction factor    -   Next ID(attribute)    -   Totalconfidence=0    -   For all IDs(attributes) in profile-to-update(highest score        profile)        -   Totalconfidence+=IDprediction factor    -   Next ID(attribute)    -   NormalizationFactor=Totalconfidence/100%    -   For all IDs(attributes) in profile-to-update(highest score        profile)        -   IDprediction factor=IDprediction factor/NormalizationFactor    -   Next ID(attribute)

Attributes need not comprise logical values, for example attributesbased on Bluetooth identities do not need to be logical values, but maybe variable values such as received power level. To emulate a rangedvariable, i.e. multiple levels of the same attribute, (varying lightlevels is another example) continuums may be used. For example, on ascale from 0 to 1, the range 0 to 0.33 would represent a low “powerlevel” or “low light level present”, 0.33 to 0.67 as a “medium powerlevel” or “medium light level present” and 0.67 to 1 as “high powerlevel” or “high light level present”. In one embodiment each of thesecontinuums could have a different attribute identity (ID) and thusconstitute a different aspect of an environment from each other.Optionally each different observed value could be considered a separateaspect, instead of splitting the variable range into sub-ranges.

In another embodiment or in combination with the embodiment describedabove, the classification module 206 may also be configured to take intoaccount an ‘expected level’ variable attribute and for examplenormalized to a 0 . . . 1 range. This type of variable value attributemay have some benefits over the ‘emulated ranged variable’. By comparingthe expected level and the observed level, an error value can becomputed. In the described embodiments this allows for, for example, thefactoring in of Bluetooth signal strength received at Bluetooth sensormodule 202.

If a particular Bluetooth source is included in a stored profile and hasa signal strength of 0.4 (on a scale of 0 . . . 1), then an observedprofile including the same Bluetooth identity but different power wouldneed to be taken into account. For example, if an observed profileincludes the same Bluetooth identifier as an attribute but with astrength of 0.25 an error factor may be calculated. For example, in thisexample the error factor may be (0.4-0.25)^2=0.0225. Therefore, theinfluence of that reduced power level attribute could be diminished whenused in predicting the current environment (as defined by the predictionvalue) by some value based on 0.0225. In such a scenario, the Bluetoothattribute is observed, but not at the expected signal strength.Therefore, its influence in predicting the current environment isdiminished. The foregoing is provided by way of example only, and otherformula and methods for determining and using an error factor may beimplemented.

The ‘expected level’ variable may be suitable for use in situationswhere the ‘observed level’ can be computed by a formula and the resultcan be represented by a non-integer number. An attribute based on wholeelements or things would not be suitable for non-integer value, but if anon-integer value might be meaningful since events that occur around thesame time might be stronger related.

For such a modified embodiment of the classification module 206, theprediction factor added to the score at step S414 of process flowcontrol diagram 400 illustrated in FIG. 4 may be multiplied by an “errorfactor”. The “error factor” represents the difference between the powerlevels of the Bluetooth identity attribute of the stored profile and thesame Bluetooth identity in the observed profile being compared with theBluetooth identity attribute of the stored profile. Such a modifiedembodiment may include multiplication by the error factor at step 414 ofthe process flow control diagram 400.

By way of further non-limiting example, pseudo code for animplementation of such a modified embodiment of the classificationmodule where Bluetooth attributes include a variable valuerepresentative of sensed power level for the Bluetooth signal isprovided below. Pseudo code for modified classification module:

-   -   For all stored profiles    -   score[profile]=0    -   For all IDs(attributes) in stored profile        -   if ID(attribute) in stored profile is in observed            environment            -   add ((prediction factor)×(error factor)) to                score[profile]        -   else            -   subtract prediction factor from score[profile]    -   Next ID(attribute) in stored profile    -   Next stored profile

The difference between attributes based on logical values and those withvariable values may be such that when using an ‘emulated rangedvariable’ approach a more precise prediction of an environment may bemade as the different ranges are mutually exclusive. However if the‘expected level’ variable approach is used to evaluate for exampleanimal height, which for a particular observed profile is 1 m tall,there may be ambiguity between an animal that is 0.80 m (0.80 meters)tall and an animal that is 1.20 m tall. It could be either. Thisparticular observation did not help in determining the environment, butthe possibility that it is an animal that is 0.60 m tall or 1.40 m tallis now smaller, however such possibilities may still be underconsideration. The classification module 206 may have never observed a 1m tall animal before, but it has modified the profile into the rightdirection. The ‘expected level’ variable approach may be suitable forcases that might be interpolated or extrapolated. The ‘emulated rangedvariable’ approach may be suitable for cases that can not bemeaningfully interpolated or extrapolated.

Turning now to action module 212, action module 212 may be configured toautomatically monitor the behavior of the smartphone for an observedprofile. The action module 212 may form a concordance table in memory216 as illustrated in FIG. 8. As can be seen from FIG. 8, three columnsmay be established where in the first column stored profile identitiesare listed; in the second column observed smartphone behaviors arelisted; and in the third column actions to be initiated are listed.Optionally, an entry in the second column may be left blank if theaction to be initiated for the corresponding stored profile has been setby a user of the smartphone.

As well as outputting the highest score profile to the learning module210, the classification module 206 also outputs the highest scoreprofile, or at least an identifier for the highest score profile, to theaction module 212, S424. In the described embodiment, the action modulereceives the information on the highest score profile and looks thatprofile up in a concordance table, such as illustrated in FIG. 8, storedin memory 216. The action module initiates the action corresponding tothe highest score profile. Therefore, profile(1) has the highest scorethen action module 212 initiates setting the smartphone to “silentmode”.

The foregoing described embodiments address the issue of profile orenvironment “drift”. For example, in a Bluetooth environment devices maymove in and out of range if they are portable or are switched on or off.A whole Bluetooth environment may change over time, but the physicallocation that the smartphone resides in may stay the same. Embodimentsof the invention may provide profile drift immunity since theenvironment classification application may keep track of a profile,while its constituent attributes change over time. The describedembodiments achieve this by sensing the environment attributes atperiodic intervals and adjusting for attributes changing in theenvironment.

In a further embodiment, the learning module 210 may be configured tolook for strong commonalities in the stored profiles. Thus, two or morestored profiles with high correlation may be detected and the similarattributes identified. These similarities, in turn, may be stored asconcepts (generalizations). The learning module 210 may create a parentprofile that describes the common attributes and link the parent profileto the two profiles that have these attributes in common. In this way a“tree” structure may be developed for storing linked profiles. Treescould be built with any depth.

In an office Bluetooth environment, one such example of stored profilesthat could have common attributes would be profiles corresponding toparticular locations in the office such as ‘water cooler’, ‘conferenceroom’ and ‘my desk’ where similar Bluetooth devices might be sensed andthe learning module 210 develop a concept of the generic location‘office’. A user may name the new concept as ‘office’ or the learningmodule 210 may automatically correlate information from the device, forexample from a diary or scheduler application running on thecommunications device.

An optimization gain may also be made. As the collection of profilesgrows, searching through them all will take longer and longer. Theautomatically generated tree described above may speed searching up byenabling efficient searching. If the classification module 206determines that the smartphone is not in the ‘office’, there is no needto match its children ‘water cooler’, ‘conference room’ or ‘my desk’. Asprofiles may be updated, branches, nodes and leaves may be moved aroundand the branches grow and shrink.

As profiles drift, they may also converge. It may be that profiles thatstarted out differently later describe exactly the same thing. In orderto limit memory usage, reduce search times and optimize search trees,the learning module may be configured to automatically eliminate one ofduplicate profiles for example. Additionally, action module 212 may beconfigured to make actions that were initiated for one or other of theduplicate profiles available to the remaining one profile. For example,if profiles corresponding to ‘office’ and ‘home’ converge because a userhas started working from home, and one of them is deleted, the learningmodule 210 may update the action module 212 to configure it so that thatthe device can initiate actions associated with “home” such as use the‘home’ WiFi connection and any other facilities that were linked to‘home’. The remaining profile may also initiate ‘office’behavior/facilities/equipment. For example, alerts that were scheduledfor ‘office’ now trigger when the smartphone is at a user's home andvice versa.

In view of the foregoing description it will be evident to a personskilled in the art that various modifications may be made in view of thedisclosure herein. For example, the data-processing apparatus need notbe configured as a smartphone but may be configured as another form ofcommunications device such as a cellular telephone or a personal digitalassistant (PDA) equipped with cellular radio communication capability.Optionally, the data-processing apparatus need not be configured as acommunications device but may instead be a computer system such as apersonal computer, a non-communications enabled PDA, microprocessor orother processing device or circuitry. Optionally, the environmentclassification application 228 need not use Bluetooth identifiers butcould assign its own (e.g., proprietary) internal identification system.

The learning module may be configured to delete attributes from a storedprofile where the prediction factor is below a minimum threshold value.This may reduce memory requirements. The learning module willautomatically add deleted attributes as soon as they start beingincluded in observed profiles again.

The learning module may be configured to automatically increase ordecrease the learning factor for an individual attribute depending onhow long or how often or not the individual attribute has been in thestored profile. This may automatically build in robustness forattributes which have consistently appeared in a stored profile over along period of time for example, and render them resistant toshort-lived changes in an observed profile. In other words, long heldattributes may be less changeable.

Additionally, many aspects of a smartphone's or other device'senvironment may be sensed. For example, ambient light, noise or eventemperature could be sensed and incorporated into a profile. Whatapplication is running on a device may also be sensed. For a telephonyenabled device a particular number for the other party may be sensed.The foregoing are by way of non-limiting example and any anything thatcould be sensed may form part of a profile.

Insofar as embodiments of the invention described above areimplementable, at least in part, using a software-controlledprogrammable processing device such as a general purpose processor orspecial-purposes processor, digital signal processor, microprocessor, orother processing device, data processing apparatus or computer system itwill be appreciated that a computer program for configuring aprogrammable device, apparatus or system to implement the foregoingdescribed methods, apparatus and system is envisaged as an aspect of thepresent invention. The computer program may be embodied as any suitabletype of code, such as source code, object code, compiled code,interpreted code, executable code, static code, dynamic code, and thelike. The instructions may be implemented using any suitable high-level,low-level, object-oriented, visual, compiled and/or interpretedprogramming language, such as C, C++, Java, BASIC, Perl, Matlab, Pascal,Visual BASIC, JAVA, ActiveX, assembly language, machine code, and soforth. A skilled person would readily understand that term “computer” or“computing device” in its most general sense encompasses programmabledevices such as referred to above, and data processing apparatus andcomputer systems.

Suitably, the computer program is stored on a carrier medium in machinereadable form, for example the carrier medium may comprise memory,removable or non-removable media, erasable or non-erasable media,writeable or re-writeable media, digital or analog media, hard disk,floppy disk, Compact Disk Read Only Memory (CD-ROM), Company DiskRecordable (CD-R), Compact Disk Rewriteable (CD-RW), optical disk,magnetic media, magneto-optical media, removable memory cards or disks,various types of Digital Versatile Disk (DVD) subscriber identifymodule, tape, cassette solid-state memory. The computer program may besupplied from a remote source embodied in the communications medium suchas an electronic signal, radio frequency carrier wave or optical carrierwaves. Such carrier media are also envisaged as aspects of the disclosedembodiments.

The scope of the present disclosure includes any novel feature orcombination of features disclosed therein either explicitly orimplicitly or any generalization there irrespective of whether or not itrelates to the claimed invention or mitigate any or all problemsaddressed by the disclosed embodiments. The applicant hereby givesnotice that he claims may be formulated to such features during theprosecution of this application any such further application derivedtherefrom. In particular, with reference to dependent claims, featuresfrom dependent claims may be combined with those of the independentclaims and features from respective independent claims may be combinedin any appropriate manner and not merely in the specific combinationsenumerated in the claims.

1. A mobile computing device, comprising: a processing device; and amemory, wherein the memory comprises instructions that, when executed bythe processing device, cause the mobile computing device to obtain aprofile comprising one or more environmental attributes; compare theprofile with a plurality of stored profiles; assign a similarity scoreto each of the plurality of stored profiles; identify a stored profileof the plurality of stored profiles with the highest similarity score;identify an action associated with the stored profile with the highestsimilarity score; and conduct the action associated with the storedprofile.
 2. The mobile computing device of claim 1, wherein the memorycomprises further instructions that, when executed by the processingdevice, cause the mobile computing device to modify one or more of theplurality of stored profiles based on the profile.
 3. The mobilecomputing device of claim 1, wherein the mobile computing devicecomprises a smartphone, cellular telephone, or personal digitalassistant.
 4. The mobile computing device of claim 1, wherein the one ormore environmental attributes comprise a Bluetooth protocol deviceidentifier.
 5. The mobile computing device of claim 4, wherein theBluetooth protocol device identifier is a Media Access Control address.6. The mobile computing device of claim 1, wherein the one or moreenvironmental attributes comprise at least one of an ambient lightpresence indication, a noise level indication, and a temperatureindication.
 7. The mobile computing device of claim 1, furthercomprising one or more sensors, wherein the mobile computing deviceobtains the one or more one or more environmental attributes from theone or more sensors.
 8. The mobile computing device of claim 1, whereinthe action is at least one of initiating a silent mode, initiating avibrate mode, initiating call forwarding, initiating call filtering, andinitiating an audible mode.
 9. The mobile computing device of claim 1,wherein the one or more environmental attributes comprise one or moreidentifiers associated with one or more proximate mobile computingdevices.
 10. A non-transitory computer readable storage mediumcomprising instructions that when executed cause a device to: obtain aprofile comprising one or more environmental attributes; compare theprofile with a plurality of stored profiles; assign a similarity scoreto each of the plurality of stored profiles; identify a stored profileof the plurality of stored profiles with the highest similarity score;identify an action associated with the stored profile with the highestsimilarity score; and conduct the action associated with the storedprofile.
 11. The non-transitory computer readable storage medium ofclaim 10, wherein the one or more environmental attributes comprise aBluetooth protocol device identifier.
 12. The non-transitory computerreadable storage medium of claim 11, wherein the Bluetooth protocoldevice identifier is a Media Access Control address.
 13. Thenon-transitory computer readable storage medium of claim 10, wherein theone or more environmental attributes comprise at least one of an ambientlight presence indication, a noise level indication, and a temperatureindication.
 14. The non-transitory computer readable storage medium ofclaim 10, wherein the action is at least one of initiating a silentmode, initiating a vibrate mode, initiating call forwarding, initiatingcall filtering, and initiating an audible mode.
 15. The non-transitorycomputer readable storage medium of claim 10, wherein the one or moreenvironmental attributes comprise one or more identifiers associatedwith one or more proximate mobile computing devices.
 16. A methodcomprising: obtaining, by a mobile computing device, a profilecomprising one or more environmental attributes; comparing, by themobile computing device, the profile with a plurality of storedprofiles; assigning, by the mobile computing device, a similarity scoreto each of the plurality of stored profiles; identifying, by the mobilecomputing device, a stored profile of the plurality of stored profileswith the highest similarity score; identifying, by the mobile computingdevice, an action associated with the stored profile with the highestsimilarity score; and conducting, by the mobile computing device, theaction associated with the stored profile.
 17. The method of claim 16,wherein the action is at least one of initiating a silent mode,initiating a vibrate mode, initiating call forwarding, initiating callfiltering, and initiating an audible mode.
 18. The method of claim 16,wherein the one or more environmental attributes comprise one or moreidentifiers associated with one or more proximate mobile computingdevices.
 19. The method of claim 16, wherein the one or moreenvironmental attributes comprise at least one of an ambient lightpresence indication, a noise level indication, and a temperatureindication.
 20. The method of claim 16, wherein the one or moreenvironmental attributes comprises a Bluetooth protocol deviceidentifier, and wherein the Bluetooth protocol device identifier is aMedia Access Control address.